using System.Transactions;

namespace CSharpPro._1030;

/*继承：
 1，子类在继承父类时即可以接受父类的属性并调用，又可以继承父类的构造和析构方法
 2，子类只能实现父类定义的抽象方法，不能实现父类中以实现的方法
 3，在实现方法时正常情况下均由上往下执行，但析构方法会从下向上销毁类
 */
public class Son : Father
{
    private String name="this is son_name";
    private String realname="this is son_realname";
    public Son()
    {
    }
    public Son(string name,String realname)
    {
        this.name = name;
        this.realname = realname;
    }

    public string Name1
    {
        get => name;
        set => name = value ?? throw new ArgumentNullException(nameof(value));
    }

    public string Realname
    {
        get => realname;
        set => realname = value ?? throw new ArgumentNullException(nameof(value));
    }

    public void Deconstruct()
    {
        
        Console.WriteLine("son Deconstruct");
    }
    
    ~Son(){
        Console.WriteLine("son已销毁");
    }

    public void Print1()
    {
        Console.WriteLine("Son Print1");
    }
    
    //继承父类的Print2方法
    public override void Print2()
    {
        Console.WriteLine("Son Print2");
    }
}